/**
 * 
 */

package com.gustozzi.distribucion.action;

import java.util.Date;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;

import org.apache.struts2.interceptor.ServletRequestAware;

import com.gustozzi.distribucion.action.util.Constantes;
import com.gustozzi.distribucion.negocio.TransporteBO;
import com.gustozzi.distribucion.negocio.impl.TransporteBOImpl;
import com.gustozzi.domain.SolicitudTransporte;
import com.gustozzi.domain.Transporte;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;

/**
 * @author FABRIZIO
 * 
 */
public class TransporteAction extends ActionSupport implements ServletRequestAware
{
    private static final long serialVersionUID = 1L;
    TransporteBO transporteBO = new TransporteBOImpl();
    private Transporte transporteBusqueda;
    private List<Transporte> listaTransporte;
    private ActionContext context;
    private Map<String, Object> appCon;
    private boolean indicadorConsulta;

    private String btnSeleccionado;
    private String codigoSeleccionado;
    private String placa;

    public List<Transporte> getListaTransporte()
    {
        return listaTransporte;
    }

    public void setListaTransporte(List<Transporte> listaTransporte)
    {
        this.listaTransporte = listaTransporte;
    }

    public String execute()
    {
        String destino = Constantes.CADENA_VACIA;
        if (btnSeleccionado.equalsIgnoreCase(Constantes.BTN_FILTRAR))
        {
            destino = obtenerListaTransporte();
        }
        if (btnSeleccionado.equalsIgnoreCase(Constantes.BTN_CONSULTAR_TRANSPORTE))
        {
            destino = obtenerListaTransporte();
        }
        else if (btnSeleccionado.equalsIgnoreCase(Constantes.BTN_NUEVO))
        {
            destino = nuevoTransporte();
        }
        else if (btnSeleccionado.equalsIgnoreCase(Constantes.BTN_ELIMINAR))
        {
            destino = eliminarDespacho();
        }
        else if (btnSeleccionado.equalsIgnoreCase(Constantes.BTN_EDITAR))
        {
            destino = editarDespacho();
        }
        else if (btnSeleccionado.equalsIgnoreCase(Constantes.BTN_GUARDAR))
        {
            destino = guardarTransporte();
        }
        else if (btnSeleccionado.equalsIgnoreCase(Constantes.BTN_CANCELAR))
        {
            destino = "CONSULTARTRANSPORTE";
        }
        return destino;
    }

    public String guardarTransporte()
    {
        String destino = Constantes.CADENA_VACIA;
        String respuesta = Constantes.CADENA_VACIA;

        try
        {

            SimpleDateFormat sdf = new java.text.SimpleDateFormat("dd/MM/yyyy");
            String fechaReque = sdf.format(transporteBusqueda.getFechaRequerimiento()).toString();
            System.out.println("fechaReq" + fechaReque);
            // String
            // fechaReque=transporteBusqueda.getFechaRequerimiento().getTime();

            String codigo = transporteBusqueda.getCodigoTransporte();
            String codigoChofer = transporteBusqueda.getChofer().getCodigo();

            String codigoCentro = transporteBusqueda.getCentroDistribucion().getCodigo();
            String placa = transporteBusqueda.getPlaca();
            String fechaRequerimiento = transporteBusqueda.getFechaDesde();
            String color = transporteBusqueda.getColor();
            String kilometros = transporteBusqueda.getKilometros();
            String peso = transporteBusqueda.getPeso().toString();
            respuesta = transporteBO.guardarTransporte(codigo, codigoCentro, codigoChofer, placa, color, kilometros,
                    peso, "", fechaReque);

            if (respuesta.equalsIgnoreCase(Constantes.ERROR))
            {
                destino = Constantes.ERROR;
            }
            else
            {

                obtenerListaTransporte();
                destino = "CONSULTARTRANSPORTE";
                transporteBusqueda = new Transporte();
                /*
                 * context= ActionContext.getContext(); appCon =
                 * context.getApplication(); listaTransporte =
                 * (List<Transporte>) appCon.get("listaTransporte"); destino =
                 * "CONSULTARTRANSPORTE";
                 */
            }

        }
        catch (Exception e)
        {
            destino = Constantes.ERROR;
        }
        return destino;
    }

    public String editarDespacho()
    {
        String destino = "";

        try
        {

            context = ActionContext.getContext();
            appCon = context.getApplication();
            listaTransporte = (List<Transporte>) appCon.get("listaTransporte");

            String codigoTransporte = codigoSeleccionado;

            for (int x = 0; x < listaTransporte.size(); x++)
            {

                if (listaTransporte.get(x).getCodigoTransporte().equals(codigoTransporte))
                {
                    transporteBusqueda = listaTransporte.get(x);
                    System.out.println("CodigoChofer>>>>>" + transporteBusqueda.getChofer().getCodigo());
                    System.out.println("CodigoCentro>>>>>" + transporteBusqueda.getCentroDistribucion().getCodigo());
                }
            }

            destino = "NUEVOTRANSPORTE";

        }
        catch (Exception e)
        {
            destino = "ERROR";
        }
        return destino;
    }

    public String eliminarDespacho()
    {
        String destino = Constantes.CADENA_VACIA;
        String respuesta;
        String codigoDespachoEliminar = codigoSeleccionado;
        try
        {
            respuesta = transporteBO.eliminarTransporte(codigoDespachoEliminar);

            if (respuesta.equalsIgnoreCase("OK"))
            {
                // destino = "CONSULTARTRANSPORTE";
                destino = obtenerListaTransporte();
            }
            else
            {
                destino = Constantes.ERROR;
            }
        }
        catch (Exception e)
        {
            destino = Constantes.ERROR;
        }
        return destino;
    }

    public String getCodigoSeleccionado()
    {
        return codigoSeleccionado;
    }

    public void setCodigoSeleccionado(String codigoSeleccionado)
    {
        this.codigoSeleccionado = codigoSeleccionado;
    }

    public String nuevoTransporte()
    {
        transporteBusqueda = new Transporte();
        transporteBusqueda.setCodigoTransporte("TEMP");
        String destino = "NUEVOTRANSPORTE";
        return destino;
    }

    public String obtenerListaTransporte()
    {
        String destino = "";
        List<Transporte> lista = null;
        try
        {
            String codigo = transporteBusqueda.getCodigoTransporte();
            String codigoChofer = transporteBusqueda.getChofer().getCodigo();
            String codigoCentro = transporteBusqueda.getCentroDistribucion().getCodigo();
            String placa = transporteBusqueda.getPlaca();
            String fechaDesde = transporteBusqueda.getFechaDesde();
            String fechaHasta = transporteBusqueda.getFechaHasta();
            lista = new ArrayList<Transporte>();
            lista = transporteBO.obtenerListaTransporte(codigo, codigoChofer, codigoCentro, placa, fechaDesde,
                    fechaHasta);
            this.setListaTransporte(lista);

            context = ActionContext.getContext();
            appCon = context.getApplication();
            appCon.put("listaTransporte", listaTransporte);
            destino = "CONSULTARTRANSPORTE";

            if (lista.size() > 0)
                indicadorConsulta = false;
            else
                indicadorConsulta = true;

        }
        catch (Exception e)
        {
            destino = Constantes.ERROR;
        }
        return destino;
    }

    public void setBtnSeleccionado(String btnSeleccionado)
    {
        this.btnSeleccionado = btnSeleccionado;
    }

    @Override
    public void setServletRequest(HttpServletRequest arg0)
    {
        // TODO Auto-generated method stub

    }

    public Transporte getTransporteBusqueda()
    {
        return transporteBusqueda;
    }

    public void setTransporteBusqueda(Transporte transporteBusqueda)
    {
        this.transporteBusqueda = transporteBusqueda;
    }

    public boolean isIndicadorConsulta()
    {
        return indicadorConsulta;
    }

    public void setIndicadorConsulta(boolean indicadorConsulta)
    {
        this.indicadorConsulta = indicadorConsulta;
    }

    public String getPlaca()
    {
        return placa;
    }

    public void setPlaca(String placa)
    {
        this.placa = placa;
    }

}
